package com.jhgsys.internal.base.service;

import com.jhgsys.internal.base.dto.BaseAreSchedulingDto;
import com.jhgsys.internal.base.dto.BaseAreaSchedulingDto;
import com.jhgsys.internal.base.dto.BaseAreaSchedulingInfoQuery;
import com.jhgsys.internal.base.entity.BaseArea;
import com.jhgsys.internal.base.entity.BaseAreaScheduling;
import com.jhgsys.internal.common.entity.QueryRequest;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 区域排班 Service接口
 *
 * @author admin
 * @date 2024-07-31 14:35:45
 */
public interface IBaseAreaSchedulingService extends IService<BaseAreaScheduling> {
    /**
     * 查询（分页）
     * @author admin
     * @date 2024-07-31 14:35:45
     * @param request QueryRequest
     * @param baseAreaScheduling baseAreaScheduling
     * @return IPage<BaseAreaScheduling>
     */
    IPage<BaseAreaScheduling> findBaseAreaSchedulingPage(QueryRequest request, BaseAreaScheduling baseAreaScheduling);

    /**
     * 查询所有
     * @param scheduling
     * @return
     */
    List<BaseAreaSchedulingDto> findBaseAreaSchedulingList(BaseAreaSchedulingDto scheduling);

    /**
    * 根据ID查询
    * @author admin
    * @date 2024-07-31 14:35:45
    * @param id
    * @return BaseAreaScheduling
    */
    BaseAreaScheduling findBaseAreaSchedulingById(String id);

    /**
     * 新增
     * @author admin
     * @date 2024-07-31 14:35:45
     * @param baseAreaScheduling baseAreaScheduling
     */
    void createBaseAreaScheduling(BaseAreaScheduling baseAreaScheduling);


    /**
     * 修改
     * @author admin
     * @date 2024-07-31 14:35:45
     * @param baseAreaScheduling baseAreaScheduling
     */
    void updateBaseAreaScheduling(BaseAreaScheduling baseAreaScheduling);

    /**
     * 逻辑删除
     * @author admin
     * @date 2024-07-31 14:35:45
     * @param baseAreaScheduling baseAreaScheduling
     * @param baseAreaSchedulingIds baseAreaSchedulingIds
     */
    void deleteBaseAreaScheduling(BaseAreaScheduling baseAreaScheduling,String baseAreaSchedulingIds);

    /**
     * 批量逻辑删除
     * @author zhangwei
     * @date 2024-09-10 09:59:32
     * @param areaId areaId
     */
    void batchDeleteBaseAreaScheduling(String areaId);

    /**
    * 物理删除
    * @author admin
    * @date 2024-07-31 14:35:45
    * @param baseAreaSchedulingIds baseAreaSchedulingIds
    */
    void physicallyDeleteBaseAreaScheduling(String baseAreaSchedulingIds);


    List<String> selectDate(BaseAreaSchedulingInfoQuery query);

    List<BaseAreaScheduling> selectNewestSchedule(String areaId);
}
